<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 流年 <liu21st@gmail.com>
// +----------------------------------------------------------------------

// 应用公共文件

use think\Config;

/**
 * json转数组
*/
function arr($json)
{
	return json_decode($json);
}
/**
 * 密码加密
 * @param string $pass: 要加密的密码
 * @return string $password:加密成功的密码 boolean false :密码不存在
 *
 */

function  encrypt($pass)
{
	return md5(md5($pass."YPYX..."));
}

/**
 * 发送邮件方法
 * @param string $to：接收者邮箱地址
 * @param string $title：邮件的标题
 * @param string $content：邮件内容
 * @return boolean  true:发送成功 false:发送失败
 */

function sendMail($to,$title,$content)
{
	$mail = new \PHPMailer\PHPMailer\PHPMailer();
	//是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式
	//$mail->SMTPDebug = 1;
	
	//使用smtp鉴权方式发送邮件
	$mail->isSMTP();
	
	//smtp需要鉴权 这个必须是true
	$mail->SMTPAuth=true;
	
	//链接qq域名邮箱的服务器地址
	$mail->Host = 'smtp.qq.com';
	
	//设置使用ssl加密方式登录鉴权
	$mail->SMTPSecure = 'ssl';
	
	//设置ssl连接smtp服务器的远程服务器端口号，以前的默认是25，但是现在新的好像已经不可用了 可选465或587
	$mail->Port = 465;
	
	//设置smtp的helo消息头 这个可有可无 内容任意
	 //$mail->Helo = 'Hello smtp.qq.com Server';
	
	//设置发件人的主机域 可有可无 默认为localhost 内容任意，建议使用你的域名
	// $mail->Hostname = 'http://www.lsgogroup.com';
	
	//设置发送的邮件的编码 可选GB2312 我喜欢utf-8 据说utf8在某些客户端收信下会乱码
	$mail->CharSet = 'UTF-8';
	
	//设置发件人姓名（昵称） 任意内容，显示在收件人邮件的发件人邮箱地址前的发件人姓名
	$mail->FromName = '新品有戏商家注册';
	
	//smtp登录的账号 这里填入字符串格式的qq号即可
	$mail->Username ='1300153705@qq.com';
	
	//smtp登录的密码 使用生成的授权码（就刚才叫你保存的最新的授权码）
	$mail->Password = 'vrkafobnqgjhhagf';
	
	//设置发件人邮箱地址 这里填入上述提到的“发件人邮箱”
	$mail->From = '1300153705@qq.com';
	
	//邮件正文是否为html编码 注意此处是一个方法 不再是属性 true或false
	$mail->isHTML(true);
	
	//设置收件人邮箱地址 该方法有两个参数 第一个参数为收件人邮箱地址 第二参数为给该地址设置的昵称 不同的邮箱系统会自动进行处理变动 这里第二个参数的意义不大
	$mail->addAddress($to,'lsgo在线通知');
	
	//添加多个收件人 则多次调用方法即可
	// $mail->addAddress('xxx@163.com','lsgo在线通知');
	
	//添加该邮件的主题
	$mail->Subject = $title;
	
	//添加邮件正文 上方将isHTML设置成了true，则可以是完整的html字符串 如：使用file_get_contents函数读取本地的html文件
	$mail->Body = $content;
	
	//为该邮件添加附件 该方法也有两个参数 第一个参数为附件存放的目录（相对目录、或绝对目录均可） 第二参数为在邮件附件中该附件的名称
	// $mail->addAttachment('./d.jpg','mm.jpg');
	//同样该方法可以多次调用 上传多个附件
	// $mail->addAttachment('./Jlib-1.1.0.js','Jlib.js');
	
	$status = $mail->send();
	
	//简单的判断与提示信息
	if($status) {
		return true;
	}else{
		return false;
	}
}

/**
 * 时间转换
 * @param string $date 时间戳
*/
function conversion($date)
{
	return date('Y-m-d H:i:s',$date);
}

/**
 * 获取指定年月日的开始时间戳和结束时间戳(本地时间戳非GMT时间戳)
 * [1] 指定年：获取指定年份第一天第一秒的时间戳和下一年第一天第一秒的时间戳
 * [2] 指定年月：获取指定年月第一天第一秒的时间戳和下一月第一天第一秒时间戳
 * [3] 指定年月日：获取指定年月日第一天第一秒的时间戳
 * @param  integer $year     [年份]
 * @param  integer $month    [月份]
 * @param  integer $day      [日期]
 * @return array('start' => '', 'end' => '')
 */
function getStartAndEndUnixTimestamp($year = 0, $month = 0, $day = 0)
{
	if(empty($year))
	{
		$year = date("Y");
	}
	
	$start_year = $year;
	$start_year_formated = str_pad(intval($start_year), 4, "0", STR_PAD_RIGHT);
	$end_year = $start_year + 1;
	$end_year_formated = str_pad(intval($end_year), 4, "0", STR_PAD_RIGHT);
	
	if(empty($month))
	{
		//只设置了年份
		$start_month_formated = '01';
		$end_month_formated = '01';
		$start_day_formated = '01';
		$end_day_formated = '01';
	}
	else
	{
		
		$month > 12 || $month < 1 ? $month = 1 : $month = $month;
		$start_month = $month;
		$start_month_formated = sprintf("%02d", intval($start_month));
		
		if(empty($day))
		{
			//只设置了年份和月份
			$end_month = $start_month + 1;
			
			if($end_month > 12)
			{
				$end_month = 1;
			}
			else
			{
				$end_year_formated = $start_year_formated;
			}
			$end_month_formated = sprintf("%02d", intval($end_month));
			$start_day_formated = '01';
			$end_day_formated = '01';
		}
		else
		{
			//设置了年份月份和日期
			$startTimestamp = strtotime($start_year_formated.'-'.$start_month_formated.'-'.sprintf("%02d", intval($day))." 00:00:00");
			$endTimestamp = $startTimestamp + 24 * 3600 - 1;
			return array('start' => $startTimestamp, 'end' => $endTimestamp);
		}
	}
	
	$startTimestamp = strtotime($start_year_formated.'-'.$start_month_formated.'-'.$start_day_formated." 00:00:00");
	$endTimestamp = strtotime($end_year_formated.'-'.$end_month_formated.'-'.$end_day_formated." 00:00:00") - 1;
	return array('start' => $startTimestamp, 'end' => $endTimestamp);
}


/**
 * 飞鹅云打印
 * @param  array  $orderInfo   订单信息
 * @param  int    $times       打印次数
 * @param  int    $prntId       打印机编号
 */
function order_print($orderInfo,$times,$printId)
{
	header("Content-type: text/html; charset=utf-8");
	$config = Config::get('feiyun');
	
	$content = [
		'user' => $config['user'],
		'stime' => $config['stime'],
		'sig' => sha1($config['user'].$config['key'].$config['stime']),
		'apiname'=>'Open_printMsg',
		'sn'=>$printId,
		'content'=>$orderInfo,
		'times'=>$times,
	];
	vendor('fei.HttpClient');
	$client = new HttpClient($config['ip'],$config['port']);
	if(!$client->post($config['path'],$content)){
		return 'error';
	}else{
		return $client->getContent();
	}
}

/**
 
 * excel表格导出
 
 * @param string $fileName 文件名称
 
 * @param array $headArr 表头名称
 
 * @param array $data 要导出的数据
 
 * @author static7
 */

function excelExport($fileName = '', $headArr = [], $data = []) {
	
	$fileName .= ".xls";
	$objPHPExcel = new \PHPExcel();
	
	$objPHPExcel->getProperties();
	
	$key = ord("A"); // 设置表头
	
	foreach ($headArr as $v) {
		
		$colum = chr($key);
		
		$objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v);
		
		$objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v);
		
		$key += 1;
		
	}
	
	$column = 2;
	
	$objActSheet = $objPHPExcel->getActiveSheet();
	
	foreach ($data as $key => $rows) { // 行写入
		$span = ord("A");
		foreach ($rows as $keyName => $value) { // 列写入
			$objActSheet->setCellValue(chr($span) . $column, $value);
			$span++;
		}
		$column++;
	}
	$fileName = iconv("utf-8", "gb2312", $fileName); // 重命名表
	
	$objPHPExcel->setActiveSheetIndex(0); // 设置活动单指数到第一个表,所以Excel打开这是第一个表
	
	header('Content-Type: application/vnd.ms-excel');
	
	header("Content-Disposition: attachment;filename='$fileName'");
	
	header('Cache-Control: max-age=0');
	
	$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
	
	$objWriter->save('php://output'); // 文件通过浏览器下载
	
	exit();
	
}




